home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 8434 / 8434.xpi / chrome / content / GoogleRedesignedUpdateManager.js < prev    next >
Text File  |  2010-02-08  |  10KB  |  193 lines

  1. var GoogleRedesignedUpdateManager = {
  2. googleredesignedupdate:function (method) {
  3.     if (GoogleRedesignedUpdateManager.updating == true) {
  4.         if (method == "automate") {
  5.             //window.setTimeout(function(){GoogleRedesignedUpdateManager.googleredesignedupdate('automate')},86400000);
  6.             return;
  7.         }
  8.         return;
  9.     } else {
  10.         var grprefsinstance = Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefBranch);
  11.         var grautoupdateon = grprefsinstance.getBoolPref("extensions.googleredesigned.autoupdateon");
  12.         if(!grautoupdateon && method=='automate'){
  13.             return;
  14.         }
  15.         GoogleRedesignedUpdateManager.updating = true;
  16.         var dsp = new GoogleRedesignedRDFDataSource(googleredesignedBrowserOverlay.getConfigUri());
  17.         var te = dsp.getNode("urn:googleredesigned:extension").getChildren();
  18.         while (te.hasMoreElements()) {
  19.             var extensionupdatingnode = te.getNext();
  20.         }
  21.         extensionupdatingnode.modifyTarget("urn:googleredesigned#updating", "false", "true");
  22.         dsp.save();
  23.     }
  24.     var stylesToUpdate = [];
  25.     var enumerator, progress, styleCount, style, list, strings;
  26.     var numberDone = 0;
  27.    function revertback() {
  28.         GoogleRedesignedUpdateManager.googleredesignedupdateabortarray = [];
  29.         GoogleRedesignedUpdateManager.googleredesignedupdatesuccessarray = [];
  30.         GoogleRedesignedUpdateManager.googleredesignedupdatemethod = "";
  31.         GoogleRedesignedUpdateManager.updating = false;
  32.         var dsp = new GoogleRedesignedRDFDataSource(googleredesignedBrowserOverlay.getConfigUri());
  33.         var te = dsp.getNode("urn:googleredesigned:extension").getChildren();
  34.         while (te.hasMoreElements()) {
  35.             var extensionupdatingnode = te.getNext();
  36.         }
  37.         extensionupdatingnode.modifyTarget("urn:googleredesigned#updating", "true", "false");
  38.         dsp.save();
  39.     }
  40.    function init() {
  41.         if (method != "automate") {
  42.             if(document.getElementById("googleredesignedUpdateMeter")!=undefined) document.getElementById("googleredesignedUpdateMeter").style.display = "-moz-box";
  43.             if(document.getElementById("googleredesignedUpdateMeter-prism")!=undefined) document.getElementById("googleredesignedUpdateMeter-prism").style.display = "-moz-box";
  44.         }
  45.         GoogleRedesignedUpdateManager.googleredesignedupdatemethod = "";
  46.         GoogleRedesignedUpdateManager.googleredesignedupdateabortarray = [];
  47.         styleCount = GoogleRedesignedStyle.prototype.ds.getNode(GoogleRedesignedStyle.prototype.containerURI).getChildCount();
  48.         enumerator = GoogleRedesignedStyle.prototype.ds.getNode(GoogleRedesignedStyle.prototype.containerURI).getChildren();
  49.         progress = (document.getElementById("googleredesignedUpdateMeter")!=undefined) ? document.getElementById("googleredesignedUpdateMeter") : document.getElementById("googleredesignedUpdateMeter-prism");
  50.         GoogleRedesignedUpdateManager.googleredesignedupdatemethod = method;
  51.         checkNext();
  52.     }
  53.    function updateAll() {
  54.         numberofupdates = stylesToUpdate.length;
  55.         update(stylesToUpdate);
  56.         stylesToUpdate = [];
  57.         GoogleRedesignedStyle.prototype.ds.save();
  58.         if(document.getElementById("googleredesignedUpdateMeter")!=undefined) document.getElementById("googleredesignedUpdateMeter").style.display = "none";
  59.         if(document.getElementById("googleredesignedUpdateMeter-prism")!=undefined) document.getElementById("googleredesignedUpdateMeter-prism").style.display = "none";
  60.         var extraalertnotification = null;
  61.         if (GoogleRedesignedUpdateManager.googleredesignedupdateabortarray.length > 0) {
  62.             extraalertnotification = GoogleRedesignedUpdateManager.googleredesignedupdateabortarray.length > 1 ? "Updates unavailable for:" : "Update unavailable for:";
  63.         } else {
  64.             GoogleRedesignedUpdateManager.googleredesignedupdateabortarray = null;
  65.         }
  66.         window.openDialog("chrome://googleredesigned/content/alert.xul", "alert:alert", "chrome,dialog=yes,titlebar=no,popup=yes", (numberofupdates > 1 ? "Updates" : "Update") + " saved succesfully for: ", GoogleRedesignedUpdateManager.googleredesignedupdatesuccessarray, extraalertnotification, GoogleRedesignedUpdateManager.googleredesignedupdateabortarray);
  67.         if (method=='automate') {/*window.setTimeout(function(){GoogleRedesignedUpdateManager.googleredesignedupdate('automate')},86400000);*/}
  68.         revertback();
  69.     }
  70.     function update(styles) {
  71.         for (var i = 0; i < styles.length; i++) {
  72.             var originallyEnabled = styles[i].enabled;
  73.             if (originallyEnabled) {
  74.                 styles[i].enabled = false;
  75.             }
  76.             styles[i].code = styles[i].updatedCode;
  77.             styles[i].originalCode = styles[i].updatedCode;
  78.             styles[i].customized = false;
  79.             if (originallyEnabled) {
  80.                 styles[i].enabled = true;
  81.             }
  82.         }
  83.     }
  84.    function neverUpdate(styles) {
  85.         for (var i = 0; i < styles.length; i++) {
  86.             styles[i].neverUpdate = true;
  87.             list.removeChild(document.getElementById(styles[i].uri));
  88.         }
  89.     }
  90.    function checkNext() {
  91.         if (enumerator.hasMoreElements()) {
  92.             style = new GoogleRedesignedStyle(enumerator.getNext());
  93.             
  94.             if(!style.neverUpdate) style.checkForUpdate(updateCheckDone);
  95.             else checkNext();
  96.         } else {
  97.         
  98.             if(document.getElementById("googleredesignedUpdateMeter")!=undefined) document.getElementById("googleredesignedUpdateMeter").style.display = "none";
  99.             if(document.getElementById("googleredesignedUpdateMeter-prism")!=undefined) document.getElementById("googleredesignedUpdateMeter-prism").style.display = "none";
  100.             if (stylesToUpdate.length > 0) {
  101.                 if (method == "automate") {
  102.                     if(document.getElementById("googleredesignedUpdateMeter")!=undefined) document.getElementById("googleredesignedUpdateMeter").style.display = "-moz-box";
  103.                     if(document.getElementById("googleredesignedUpdateMeter-prism")!=undefined) document.getElementById("googleredesignedUpdateMeter-prism").style.display = "-moz-box";
  104.                     window.setTimeout(function () {updateAll();}, 5000);
  105.                     
  106.                 } else {
  107.                     updateAll();
  108.                     
  109.                 }
  110.             } else {
  111.                 if(document.getElementById("googleredesignedUpdateMeter")!=undefined) document.getElementById("googleredesignedUpdateMeter").style.display = "none";
  112.                 if(document.getElementById("googleredesignedUpdateMeter-prism")!=undefined) document.getElementById("googleredesignedUpdateMeter-prism").style.display = "none";
  113.                 if (method == "manual") {
  114.                     if (GoogleRedesignedUpdateManager.googleredesignedupdateabortarray.length > 0) {
  115.                         window.openDialog("chrome://googleredesigned/content/alert.xul", "alert:alert", "chrome,dialog=yes,titlebar=no,popup=yes", "Could not connect to update server.", "Try again later.", null, null);
  116.                         revertback();
  117.                         
  118.                     } else {
  119.                         window.openDialog("chrome://googleredesigned/content/alert.xul", "alert:alert", "chrome,dialog=yes,titlebar=no,popup=yes", "All styles are up-to-date", null, null, null);
  120.                         revertback();
  121.                         
  122.                     }
  123.                 }
  124.                 if (method == "automate") {
  125.                     //window.setTimeout(function () {GoogleRedesignedUpdateManager.googleredesignedupdate("automate");}, 86400000);
  126.                     revertback();
  127.                     
  128.                 }
  129.             }
  130.         }
  131.     }
  132.     function updateCheckDone(updatedCode) {
  133.         if (updatedCode) {
  134.             style.updatedCode = updatedCode;
  135.             stylesToUpdate.push(style);
  136.         }
  137.         checkNext();
  138.     }
  139.     function updateSelected(never) {
  140.         var indices = getSelectedIndices();
  141.         var styles = [];
  142.         for (var i = 0; i < indices.length; i++) {
  143.             styles.push(stylesToUpdate[indices[i]]);
  144.         }
  145.         var stylesNotUpdated = [];
  146.         for (var i = 0; i < stylesToUpdate.length; i++) {
  147.             var found = false;
  148.             for (var j = 0; j < indices.length; j++) {
  149.                 if (i == indices[j]) {
  150.                     found = true;
  151.                     break;
  152.                 }
  153.             }
  154.             if (!found) {
  155.                 stylesNotUpdated.push(stylesToUpdate[i]);
  156.             }
  157.         }
  158.         if (never) {
  159.             neverUpdate(styles);
  160.         } else {
  161.             update(styles);
  162.         }
  163.         stylesToUpdate = stylesNotUpdated;
  164.         if (stylesToUpdate.length == 0) {
  165.             document.getElementById("update-all").setAttribute("disabled", "true");
  166.         }
  167.         GoogleRedesignedStyle.prototype.ds.save();
  168.     }
  169.    function getSelectedIndices() {
  170.         var indices = [];
  171.         var rangeCount = list.parentNode.view.selection.getRangeCount();
  172.         for (var i = 0; i < rangeCount; i++) {
  173.             var start = {};
  174.             var end = {};
  175.             list.parentNode.view.selection.getRangeAt(i, start, end);
  176.             for (var c = start.value; c <= end.value; c++) {
  177.                 indices.push(c);
  178.             }
  179.         }
  180.         return indices;
  181.     }
  182.     function changeSelection() {
  183.         document.getElementById("update-selected").setAttribute("disabled", getSelectedIndices().length == 0 ? "true" : "false");
  184.         document.getElementById("never-update-selected").setAttribute("disabled", getSelectedIndices().length == 0 ? "true" : "false");
  185.     }
  186.    init();
  187. },
  188. googleredesignedupdateabortarray:[],
  189. googleredesignedupdatemethod:"",
  190. googleredesignedupdatesuccessarray:[],
  191. updating:false
  192. }
  193.